import {treeQueryComps} from "../../../../treeQueryComps";
import {useCascaderReportSegmentTemplateCompItem} from "../../reportSegmentTemplateCompItem";

export const pageFormItems = [
  {
    field: {
      name: 'code'
    },
    element: {
      comp: 'el-input',
      formItemProps: {
        label: '编码'
      },
      compProps: {
        clearable: true,
        placeholder: '左前缀匹配'
      }
    }
  },
  {
    field: {
      name: 'name'
    },
    element: {
      comp: 'el-input',
      formItemProps: {
        label: '名称'
      },
      compProps: {
        clearable: true,
        placeholder: '左前缀匹配'
      }
    }
  },
  useCascaderReportSegmentTemplateCompItem({fieldName: 'referenceSegmentTemplateId',label: '引用模板'}),

  useCascaderReportSegmentTemplateCompItem({}),
  ...treeQueryComps
]

export const addPageFormItems = [
  {
    field: {
      name: 'code'
    },
    element: {
      comp: 'el-input',
      formItemProps: {
        label: '编码',
        tips: '编码仅用来唯一标识一个模板，不可重复'
      },
      compProps: {
        clearable: true,
      }
    }
  },
  {
    field: {
      name: 'name'
    },
    element: {
      comp: 'el-input',
      formItemProps: {
        label: '模板名称',
        required: true,
        tips: '代表一个可读性的文本'
      },
      compProps: {
        clearable: true,
      }
    }
  },
  {
    field: {
      name: 'permissions'
    },
    element: {
      comp: 'el-input',
      formItemProps: {
        label: '权限码',
        tips: '权限码仅支持单个，不支持多个，支持根据功能权限配置输出,不配置表示具体该权限'
      },
      compProps: {
        clearable: true,
        placeholder: '如：admin:user:add',
      }
    }
  },
  {
    field: {
      name: 'outputTypeDictId'
    },
    element: {
      comp: 'PtDictFrontSelect',
      formItemProps: {
        label: '输出类型',
        required: true
      },
      compProps: {
        clearable: true,
        // 字典查询
        dictParam: {groupCode: 'report_segment_template_output_type'}
      }
    }
  },
  useCascaderReportSegmentTemplateCompItem({}),
  {
    field: {
      name: 'seq',
      value: 10
    },
    element: {
      comp: 'el-input-number',
      formItemProps: {
        label: '排序'
      },
      compProps: {
        clearable: true,
      }
    }
  },
  {
    field: {
      name: 'dataResolveScript'
    },
    element: {
      comp: 'el-input',
      formItemProps: {
        label: '数据脚本',
        displayBlock: true,
        tips: '仅支持groovy脚本，支持全局参数，返回值将被trd句柄引用，优先条件脚本执行，也可以当作模板前置处理脚本'
      },
      compProps: {
        type: 'textarea',
        rows: 10,
        clearable: true,
      }
    }
  },
  {
    field: {
      name: 'renderConditionScript'
    },
    element: {
      comp: 'el-input',
      formItemProps: {
        label: '条件脚本',
        displayBlock: true,
        tips: '仅支持groovy脚本，支持全局参数，特定返回值将被特殊处理，如：返回 ignore 不再执行后续逻辑和子模板，优先计算模板执行'
      },
      compProps: {
        type: 'textarea',
        rows: 10,
        clearable: true,
      }
    }
  },
  {
    field: {
      name: 'computeTemplate'
    },
    element: {
      comp: 'el-input',
      formItemProps: {
        label: '计算模板',
        tips: '仅支持 enjoy 语法。模板内数据引用支持global,sys,ext,parent前缀的数据，不支持渲染结果',
        displayBlock: true
      },
      compProps: {
        type: 'textarea',
        clearable: true,
        rows: 5,
        placeholder: '与名称模板使用变量一致，但不输出任何渲染结果，只适用于处理逻辑'
      }
    }
  },
  {
    field: {
      name: 'nameTemplate'
    },
    element: {
      comp: 'el-input',
      formItemProps: {
        label: '名称模板',
        tips: '仅支持 enjoy 语法。模板内数据引用支持global,sys,ext,parent前缀的数据',
        displayBlock: true
      },
      compProps: {
        type: 'textarea',
        clearable: true,
        rows: 5,
        placeholder: '根据输出类型不同会有不同的处理，输出类型为目录或文件，名称模板渲染结果将会作为目录或文件路径处理并生成对应的磁盘目录或文件'
      }
    }
  },
  {
    field: {
      name: 'nameOutputVariable'
    },
    element: {
      comp: 'el-input',
      formItemProps: {
        label: '名称输出变量名',
        tips: '表示直接子级可以在模板中使用 parent.outputVar.[变量名]'
      },
      compProps: {
        clearable: true,
      }
    }
  },
  {
    field: {
      name: 'contentTemplate'
    },
    element: {
      comp: 'el-input',
      formItemProps: {
        label: '内容模板',
        tips: '仅支持 enjoy 语法。模板内数据引用支持global,sys,ext,parent,child前缀的数据',
        displayBlock: true
      },
      compProps: {
        type: 'textarea',
        clearable: true,
        rows: 10,
        placeholder: '可以引用子一级内容输出变量，在这里聚合'
      }
    }
  },
  {
    field: {
      name: 'outputVariable'
    },
    element: {
      comp: 'el-input',
      formItemProps: {
        label: '内容输出变量名',
        tips: '表示父级可以在模板中使用 child.outputVar.[变量名]'

      },
      compProps: {
        clearable: true,
      }
    }
  },

  {
    field: {
      name: 'shareVariables'
    },
    element: {
      comp: 'el-input',
      formItemProps: {
        label: '共享变量名',
        tips: '仅子级可访问，并可设置值，值类型为Set&lt;String&gt;子级可以通过parent.share.[变量名].add("xxx")添加共享数据'
      },
      compProps: {
        clearable: true,
        placeholder: '多个以逗号分隔'
      }
    }
  },
  useCascaderReportSegmentTemplateCompItem({
    fieldName: 'referenceSegmentTemplateId',
    label: '引用模板',
    tips: '引用模板是本模板的一个副本，本模板将会合并到引用模板（本模板有值字段会覆盖引用模板对应字段），形成一个全模板，可以使用{{reference}}占位符指定合并的位置'
  }),

  {
    field: {
      name: 'remark'
    },
    element: {
      comp: 'el-input',
      formItemProps: {
        label: '描述',
        displayBlock: true,
      },
      compProps: {
        type: 'textarea',
        clearable: true,
        rows: 5,
        placeholder: '填写一些备注内容'
      }
    }
  }
]

// 更新和添加一致
export const updatePageFormItems = addPageFormItems